import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { fileURLToPath, URL } from "node:url"; // 用于处理 URL 和路径
import path from "path";
import { resolve } from "path";

import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";

export default defineConfig({
  build: {
    rollupOptions: {
      external: ["pdfjs-dist/build/pdf.worker.entry"],
    },
  },
  plugins: [
    vue(), // 1. 自动导导入api
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ["vue", "vue-router"],
      eslintrc: {
        enabled: false, // 是否自动生成 eslint 规则，建议生成之后设置 false
        filepath: "./.eslintrc-auto-import.json", // 指定自动导入函数 eslint 规则的文件
      },
      // 指定自动导入函数TS类型声明文件路径
      dts: path.resolve(__dirname, "src", "types", "auto-imports.d.ts"),
    }),
    // 2. 自动导入组件
    Components({
      dts: path.resolve(__dirname, "src", "types", "components.d.ts"),
    }),
  ],
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)), // 添加 alias
    },
  },
  define: {
    "process.env": {}, // 添加这行以解决 `process is not defined` 问题
  },
  // css: {
  //   preprocessorOptions: {
  //     scss: {
  //       // 支持在全局引入变量
  //       additionalData: `@use "@/styles/variables.scss";`,
  //     },
  //   },
  // },
  server: {
    host: "0.0.0.0",
    // port: 8080,
    // proxy: {
    //   "/api": {
    //     // '/api'是代理标识，用于告诉node，url前面是/api的就是使用代理的
    //     // target: "http://tennis.mq1234.com:8080", //这里填入你要请求的接口的前缀

    //     target: "http://192.168.10.100:8080", //这里填入你要请求的接口的前缀
    //     ws: false, //代理websocked
    //     changeOrigin: true, //是否跨域
    //     secure: true, //是否https接口
    //     // rewrite: (path) => path.replace(/^\/api\/v1/, ""), // 使用 rewrite 函数重写路径
    //     //   headers: {
    //     //     referer: 'https://uat.nsfocus.com/api/input_suggest', //这里后端做了拒绝策略限制，请求头必须携带referer，否则无法访问后台
    //     //   }
    //   },
    // },
    proxy:
      process.env.NODE_ENV === "development"
        ? {
            "/api": {
              // '/api'是代理标识，用于告诉node，url前面是/api的就是使用代理的
              // target: "http://tennis.mq1234.com:8080", //这里填入你要请求的接口的前缀

              // target: "https://fore.cnto.com", //这里填入你要请求的接口的前缀
              target: "http://192.168.10.100:8080", //这里填入你要请求的接口的前缀

              ws: false, //代理websocked
              changeOrigin: true, //是否跨域
              secure: true, //是否https接口
              rewrite: (path) => path.replace(/^\/api/, ""), // 使用 rewrite 函数重写路径
              // headers: {
              //   referer: 'https://uat.nsfocus.com/api/input_suggest', //这里后端做了拒绝策略限制，请求头必须携带referer，否则无法访问后台
              // }
            },
          }
        : undefined,
  },
});
